package com.chenjiaru.jdk8.repeatableannotation;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Arrays;

public class MyAnnotationTest {

/**
 * 关键注解描述
 * 注解加了@Repeatable(MyAnnotations.class)之后使用的地方可以多次使用了
 * 注解使用@Target(ElememtType.TYPE_PARAMETER)之后可以把注解写在方法的参数了
 *
 * 1.创建MyAnnotation注解类，加上@Repeatable(MyAnnotations.class)配置，就可以实现重复使用了
 * 2.创建MyAnnotations注解类
 * 3.创建测试类MyAnnotationTest
 */
    @MyAnnotation("Hello")
    @MyAnnotation("World")
    public void show(@MyAnnotation("parameter") String str) {
        System.out.println(str);
    }


    public static void main(String[] args) throws Exception{
        // 1.获取方法的注解
        Annotation[] annotations = MyAnnotationTest.class.getMethod("show", String.class).getAnnotations();
        Arrays.stream(annotations).forEach(System.out::println);

        // 2.获取方法参数的注解
        Annotation[] annotations2 = MyAnnotationTest.class.getMethod("show", String.class).getParameterAnnotations()[0];
        Arrays.stream(annotations2).forEach(System.out::println);
    }

}
